package com.stone.myapplication; import android.test.ActivityInstrumentationTestCase2; import android.test.AndroidTestCase; import android.test.TouchUtils; import android.test.ViewAsserts; import android.test.suitebuilder.annotation.MediumTest; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.Button; import android.widget.RelativeLayout; /** * author : stone * time : 15/4/20 16 17 * email : aa86799@163.com * * Instrumentation 无界面的单元测试 */ public class MyFirstTestActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { private MainActivity mActivity; private Button mBtn; public MyFirstTestActivityTest() { super(MainActivity.class); } @Override protected void setUp() throws Exception { super.setUp();//初始化 运行在构造函数后 setActivityInitialTouchMode(true); mActivity = getActivity(); mBtn = (Button) mActivity.findViewById(R.id.btn_recylerview); } @Override protected void tearDown() throws Exception { super.tearDown();//资源清理 垃圾回收 } @MediumTest public void testPreconditions() { assertNotNull("mActivity_is_null", mActivity); assertNotNull("mBtn is null", mBtn); Object obj = null; assertNotNull("object is null", obj);//false } @MediumTest public void testClickMeButton_layout() { final View decorView = mActivity.getWindow().getDecorView(); ViewAsserts.assertOnScreen(decorView, mBtn); final ViewGroup.LayoutParams layoutParams = mBtn.getLayoutParams(); assertNotNull(layoutParams); assertEquals(layoutParams.width, RelativeLayout.LayoutParams.WRAP_CONTENT); assertEquals(layoutParams.height, WindowManager.LayoutParams.WRAP_CONTENT); } /* 运行几毫秒的用 @SmallTest 100毫秒及以上,通常用@MediumTest或@LargeTests */ @MediumTest public void testClickMeButton_clickButtonAndExpectInfoText() { /* TouchUtils 只能用于test thread */ TouchUtils.clickView(this, mBtn); assertTrue(View.VISIBLE == mBtn.getVisibility()); assertEquals("点击了Recycler", mBtn.getText()); } }